perm filename NEWLAP[LAP,WD] blob
sn#010438 filedate 1971-12-29 generic text, type T, neo UTF8
00100 (PROG (SEXPR IBASE)
00200 (SETQ IBASE (ADD1 7))
00300 LOOP (SETQ SEXPR (ERRSET (READ)))
00400 (COND ((EQ SEXPR (QUOTE $EOF$)) (ERR)))
00500 (PRINT (EVAL (CAR SEXPR)))
00600 (GO LOOP))
00700
00800 (DECLARE (SPECIAL BPEND BPORG KLIST QLIST)
00900 (SPECIAL CONLIST GEN LOC REMOB)
01000 (DEFPROP LAPERR T *FSUBR))
01100
01200 (DEFPROP DFUNC
01300 (LAMBDA (L)
01400 (LIST (Q DEFPROP)
01500 (CAADR L)
01600 (MCONS (Q LAMBDA) (CDADR L) (CDDR L))
01700 (Q EXPR)))
01800 MACRO)
01900
02000 (DEFPROP ISTAG (LAMBDA (L) (CONS (Q ISIDENT) (CDR L))) MACRO)
02100
02200 (DEFPROP MAPDEF
02300 (LAMBDA (L)
02400 (LIST (Q MAPCAR)
02500 (SUBST (CADR L)
02600 (Q IND)
02700 (Q (FUNCTION (LAMBDA (PAIR)
02800 (PUTPROP
02900 (CAR PAIR)
03000 (CADR PAIR)
03100 (QUOTE IND))))))
03200 (LIST (Q QUOTE) (CDDR L))))
03300 MACRO)
03400
03500 (DEFPROP MCONS
03600 (LAMBDA (L)
03700 (COND ((NULL (CDDR L)) (CADR L))
03800 (T (LIST (Q CONS) (CADR L) (CONS (CAR L) (CDDR L))))))
03900 MACRO)
04000
04100 (DEFPROP Q (LAMBDA (L) (CONS (QUOTE QUOTE) (CDR L))) MACRO)
04200
04300 (DEFPROP RET (LAMBDA (L) (CONS (Q RETURN) (CDR L))) MACRO)
04400
04500 (DEFPROP FIRSTPROP (LAMBDA (L) (CONS (Q CDR) (CDR L))) MACRO)
04600
04700 (DEFPROP LASTPROP (LAMBDA (L) (CONS (Q NULL) (CDR L))) MACRO)
04800
04900 (DEFPROP NEXTPROP (LAMBDA (L) (CONS (Q CDDR) (CDR L))) MACRO)
05000
05100 (DEFPROP PROPNAM (LAMBDA (L) (CONS (Q CAR) (CDR L))) MACRO)
05200
05300 (DEFPROP PROPTABLE (LAMBDA (L) (CONS (Q CDR) (CDR L))) MACRO)
05400
05500 (DEFPROP PROPVAL (LAMBDA (L) (CONS (Q CADR) (CDR L))) MACRO)
05600
05700 (DFUNC (DELETEPROP IDENT PROPNAM)
05800 (PROG (TEM)
05900 (SETQ TEM IDENT)
06000 LOOP (COND ((NULL (CDR TEM)) (RET NIL)))
06100 (COND ((EQ (CADR TEM) PROPNAM) (RPLACD TEM (CDDDR TEM))
06200 (RET T)))
06300 (SETQ TEM (CDDR TEM))
06400 (GO LOOP)))
06500
06600 (DFUNC (HASPROP IDENT PROP) (GETL IDENT (LIST PROP)))
06700
06800 (DFUNC (INITPROP IDENT PROPNAM PROPVAL)
06900 (RPLACD IDENT (MCONS PROPNAM PROPVAL (CDR IDENT))))
07000
07100 (DFUNC (SEEKPROP IDENT PROPNAM)
07200 (PROG (TEM)
07300 (SETQ TEM (GETL IDENT (LIST PROPNAM)))
07400 (COND ((NULL TEM) (RET NIL)))
07500 (RET TEM)))
07600
07700 (DFUNC (SETPROP IDENT PROPNAM PROPVAL) (PUTPROP IDENT PROPVAL PROPNAM))
07800
07900 (DFUNC (ASSARGS OPCODE ARGS)
08000 (PROG (FIELDS WORD)
08100 (SETQ FIELDS (Q ((27 . 17) (0 . 777777) (22 . 777777))))
08200 (SETQ WORD (LSH OPCODE 22))
08300 LOOP (COND ((OR (NULL FIELDS) (NULL ARGS))
08400 (RETURN WORD)))
08500 (SETQ WORD
08600 (PLUS WORD
08700 (LSH (BOOLE 1
08800 (CDAR FIELDS)
08900 (LAPEVAL (CAR ARGS) LOC))
09000 (CAAR FIELDS))))
09100 (SETQ ARGS (CDR ARGS))
09200 (SETQ FIELDS (CDR FIELDS))
09300 (GO LOOP)))
09400
09500 (DFUNC (ASSINST INST)
09600 (PROG NIL
09700 (LAPDEPOSIT LOC
09800 (ASSARGS (GET (CAR INST) (Q OPCODE)) (CDR INST)))
09900 (SETQ LOC (ADD1 LOC))))
10000
10100 (DFUNC (CONSTANTADDR SYM LOC)
10200 (PROG (N CPTR)
10300 (SETQ CPTR KLIST)
10400 L11 (COND ((NULL CPTR) (GO L12))
10500 ((EQUAL (CDR SYM) (CAAR CPTR)) (RET (CDAR CPTR))))
10600 (SETQ CPTR (CDR CPTR))
10700 (GO L11)
10800 L12 (GVAL GEN LOC)
10900 (SETQ N 0)
11000 (SETQ CPTR CONLIST)
11100 A (COND ((NULL (CDR CPTR)) (RPLACD CPTR (LIST (CDR SYM)))))
11200 (COND ((EQUAL (CDR SYM) (CADR CPTR)) (RET N)))
11300 (SETQ N (ADD1 N))
11400 (SETQ CPTR (CDR CPTR))
11500 (GO A)))
11600
11700 (DFUNC (DEFLOC TAG LOC)
11800 (PROG (TEM)
11900 (SETQ REMOB (CONS TAG REMOB))
12000 (COND ((SETQ TEM (GET TAG (Q UNDEF))) (GO PATCH)))
12100 RET (RET (PUTPROP TAG LOC (Q TAG)))
12200 PATCH(COND ((NULL TEM) (RPLACD TAG (CDDDR TAG)) (GO RET)))
12300 (LAPDEPOSIT (CAR TEM) (PLUS (EXAMINE (CAR TEM)) LOC))
12400 (SETQ TEM (CDR TEM))
12500 (GO PATCH)))
12600
12700 (DEFPROP DEFSYM (LAMBDA (SYM VAL) (PUTPROP SYM VAL (QUOTE SYM))) EXPR)
12800
12900 (DFUNC (DOPSEUDOOP SYM LOC) ((GET (CAR SYM) (Q PSEUDOOP)) SYM LOC))
13000
13100 (DFUNC (GETGET ATOM PROP)
13200 (PROG (TEM PTAB)
13300 (SETQ PTAB (FIRSTPROP ATOM))
13400 LOOP (COND ((LASTPROP PTAB) (RET NIL)))
13500 (COND ((SETQ TEM (SEEKPROP (PROPNAM PTAB) PROP)) (RET TEM)))
13600 (SETQ PTAB (NEXTPROP PTAB))
13700 (GO LOOP)))
13800
13900 (DFUNC (GVAL SYM LOC)
14000 (COND ((GET SYM (Q TAG)))
14100 ((GET SYM (Q SYM)))
14200 ((GET SYM (Q VALUE)) (MAKNUM SYM (Q FIXNUM)))
14300 (T (PUTPROP SYM (CONS LOC (GET SYM (Q UNDEF))) (Q UNDEF)) 0)))
14400
14500 (DFUNC (ISIDENT EX) (AND (ATOM EX) (NOT (NUMBERP EX))))
14600
14700 (DEFPROP LAP
14800 (LAMBDA (SL)
14900 (PROG (LOC CONLIST GEN REMOB L)
15000 (SETQ GEN (GENSYM))
15100 (SETQ CONLIST (LIST NIL))
15200 (SETQ LOC BPORG)
15300 A (COND ((NULL (SETQ L (READ))) (GO END)))
15400 (LAPEXPR L)
15500 (GO A)
15600 END (DEFLOC GEN LOC)
15700 CONST(COND ((NULL (SETQ CONLIST (CDR CONLIST)))
15800 (EVAL (CONS (Q REMOB) REMOB))
15900 (PUTPROP (CAR SL) (NUMVAL BPORG) (CADR SL))
16000 (RET (LIST BPORG (CAR SL) (SETQ BPORG LOC)))))
16100 (SETQ KLIST (CONS (CONS (CAR CONLIST) LOC) KLIST))
16200 (LAPEXPR (CAR CONLIST))
16300 (GO CONST)))
16400 FEXPR)
16500
16600 (DFUNC (LAPDEPOSIT LOC WORD)
16700 (COND ((GREATERP LOC BPEND) (LAPERR BINARY PROGRAM SPACE EXCEEDED))
16800 (T (DEPOSIT LOC WORD))))
16900
17000 (DEFPROP LAPERR (LAMBDA (L) (PROG2 (PRINT L) (ERR))) FEXPR)
17100
17200 (DFUNC (LAPEVAL EXPR LOC)
17300 (PROG (TEM)
17400 (COND ((NUMBERP EXPR) (RETURN EXPR)))
17500 (COND ((ISIDENT EXPR) (RETURN (GVAL EXPR LOC))))
17600 (SETQ TEM (GETGET (CAR EXPR) (Q ADDRESSPROP)))
17700 (COND ((NULL TEM) (LAPERR UNDEFINED PSEUDO OP)))
17800 (RETURN ((PROPVAL TEM) EXPR LOC))))
17900
18000 (DFUNC (LAPEXPR EXPR)
18100 (COND ((ISTAG EXPR) (DEFLOC EXPR LOC))
18200 ((NUMBERP EXPR) (LAPERR NUMERIC TAG))
18300 ((NUMBERP (CAR EXPR))
18400 (LAPDEPOSIT LOC (ASSARGS (CAR EXPR) (CDR EXPR)))
18500 (SETQ LOC (ADD1 LOC)))
18600 (T (PROG (TEM)
18700 (COND ((SETQ TEM (GETGET (CAR EXPR) (Q WORDPROP)))
18800 (RET ((PROPVAL TEM) EXPR)))
18900 (T (LAPERR (UNDEFINED OPCODE))))))))
19000
19100 (DFUNC (QUOTEADDR SYM LOC)
19200 (MAKNUM (COND ((OR (NOT (ATOM (SETQ SYM (CADR SYM))))
19300 (AND (NUMBERP SYM) (NOT (EQ (PLUS SYM 0) SYM)))
19400 (EQ (CAR (EXPLODE SYM)) (Q /")))
19500 (PROG (Y)
19600 (SETQ Y QLIST)
19700 A (COND ((NULL Y)
19800 (RET (CAR (SETQ QLIST
19900 (CONS SYM QLIST)))))
20000 ((AND (EQUAL SYM (CAR Y))
20100 (EQ (TYPE SYM) (TYPE (CAR Y))))
20200 (RET (CAR Y))))
20300 (SETQ Y (CDR Y))
20400 (GO A)))
20500 (T SYM))
20600 (Q FIXNUM)))
20700
20800 (DFUNC (SPECIALADDR SYM LOC)
20900 (PROG NIL
21000 (COND ((NULL (GET (CADR SYM) (Q VALUE)))
21100 (PUTPROP (CADR SYM) (LIST NIL) (Q VALUE))))
21200 (RETURN (MAKNUM (GET (CADR SYM) (Q VALUE)) (Q FIXNUM)))))
21300
21400 (DEFPROP TYPE (LAMBDA (X) (COND ((NUMBERP X) (CADR X)))) EXPR)
21500
21600 (MAPDEF ADDRESSPROP (PSEUDOOP DOPSEUDOOP))
21700
21800 (MAPDEF WORDPROP (OPCODE ASSINST))
21900
22000 (MAPDEF SYM (A 1) (B 2) (C 3) (P 14))
22100
22200 (MAPDEF OPCODE
22300 (ADD 270000) (CALL 34000) (CALLF 36000) (CALLF@ 36020) (CAIE 302000)
22400 (CAIN 306000) (CAME 312000) (CAMN 316000) (CLEARB 403000)
22500 (CLEARM 402000) (DPB 137000) (EXCH 250000) (HLLZS@ 513020)
22600 (HLRZ 554000) (HLRZ@ 554020) (HRLM 506000) (HRLM@ 506020) (HRRM 542000)
22700 (HRRZS@ 553020) (HRRZ 550000) (HRRM@ 542020) (HRRZ@ 550020)
22800 (JCALL 35000) (JCALLF 37000) (JCALLF@ 37020) (JRST 254000) (JSP 265000)
22900 (JUMPE 322000) (JUMPN 326000) (MOVE 200000) (MOVEI 201000)
23000 (MOVEM 202000) (MOVNI 211000) (POP 262000) (POPJ 263000) (PUSH 261000)
23100 (PUSHJ 260000) (SOJE 362000) (SOJN 366000) (SUB 274000) (TDZA 634000))
23200
23300 (MAPDEF PSEUDOOP
23400 (C CONSTANTADDR) (CONSTANT CONSTANTADDR) (E QUOTEADDR)
23500 (FUNCTION QUOTEADDR) (QUOTE QUOTEADDR) (SPECIAL SPECIALADDR))
23600
23700 (COND ((NULL (GET (QUOTE QLIST) (Q VALUE))) (SETQ QLIST NIL)))
23800
23900 (COND ((NULL (GET (QUOTE KLIST) (Q VALUE))) (SETQ KLIST NIL)))
24000